package de.general;

class MiPropioError extends Exception{
	
	public MiPropioError(String mensaje){
		super(mensaje);
	}
}

public class ExceptionsWdh {

	public static void main(String[] args) {
		
		/* Compila bien
		 * Pero al ejecutar tenemos una exception(ERROR) "ArrayIndexOutOfBoundsException" 
		 */
//		int [] arr = new int [20];
		
		// gestionamos la interrupcion
		try{
		
			// arr[-3] = 24;  //para comprobar el error de abajo (division por cero)
			
			// Error de tipo de division por cero
			/*
			int b = 0;
			int a = 23/b;
			*/
			
			//Propios Exceptions
			// 1.
			//String s = null;
			//s.equals("QQQQ");
			
			// 2.
//			Exception e = new Exception("Este es mi propio Errror");
//			throw e;
			
			//3.
			MiPropioError err = new MiPropioError("Este es mi propio error!!!");
			throw err;
			
			
			
		}catch(ArrayIndexOutOfBoundsException aiobe){
			System.out.println("Error de indice en un array: "+aiobe);
		}catch(ArithmeticException ae){
			System.out.println("Error division por cero "+ ae);
		}
//		catch(Exception e){
//			System.out.println("Se ha generado un error que no es de indices, ni aritmetico");
//			System.out.println("El objeto error es de tipo " + e);
//		}
		catch(Exception e){
			e.printStackTrace();
		}
		finally
        {
	        System.out.println("Se ejecuta finally");
        }
		
		
	}

}
